package cn.com.yx.ms.service;

import cn.com.yx.ms.domain.dbmodel.ModelControl;
import cn.com.yx.ms.domain.dbmodel.ModelMain;
import cn.com.yx.ms.domain.dbmodel.StlDevMap;
import cn.com.yx.ms.domain.dev.EquipmentAndSiteModel;
import cn.com.yx.ms.domain.model.ModelControlModel;
import cn.com.yx.ms.domain.model.ModelMainModel;
import cn.com.yx.ms.domain.model.SimpleModel;
import cn.yx.framework.configuration.ApiCode;
import cn.yx.framework.view.ApiResult;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * 栏目/模板管理统一接口
 */
public interface IModelService {

    /**
     * 检索获取栏目相关数据
     *
     * @param modelModel 栏目Bean
     * @return
     */
    ApiResult getAllModelControl(ModelControlModel modelModel);

    /**
     * 新增栏目
     * @param modelControl 栏目Bean
     * @return
     */
    ApiResult addModelControl(ModelControl modelControl);

    /**
     * 修改栏目
     * @param modelControl 栏目Bean
     * @return
     */
    ApiResult editModelControl(ModelControl modelControl);

    /**
     * 停用栏目
     * @param guid 栏目id
     * @return
     */
    ApiResult disableModelControl(String guid);

    /**
     * 检索获取模板相关数据
     *
     * @param modelModel 模板Bean
     * @return
     */
    ApiResult getAllModelMain(ModelMainModel modelModel);

    /**
     * 新增模板
     * @param modelMain 模板Bean
     * @return
     */
    ApiResult addModelMain(ModelMainModel modelMain);

    /**
     * 修改模板
     * @param modelMain 模板Bean
     */
    ApiResult editModelMain(ModelMainModel modelMain);

    /**
     * 获取栏目下拉框
     * @return
     */
    ApiResult getModelControl();

    /**
     * 停用模板
     * @param guid 模板id
     * @return
     */
    ApiResult disableModelMain(String guid);

//    /**
//     * 导出模板
//     * @param guids 模板id组
//     * @return
//     */
//    ApiResult exportModel(String guids, HttpServletResponse res);

    /**
     * 导入模板
     * @param request
     * @return
     */
    ApiResult importModel(HttpServletRequest request);

    /**
     * 获取模板一览(全部)
     *
     * @return
     */
    ApiResult getModelMainList();

    ApiResult getModelMainListByStyleId(String styleId);

    List<ModelMainModel> getDefaultStyleModels();

    List<StlDevMap> getDevsByStyleId(String styleId);

    List<EquipmentAndSiteModel> getEquipmentAndSiteByStyleId(String styleId);

    /**
     * 判断导入的模版是否重复
     * @param modelMainModel
     * @return
     */
    ApiResult isRepeated(ModelMainModel modelMainModel);

    /**
     * 根据id删除模板
     * @param guid 模板id
     * @return
     */
    ApiResult deleteModelMain(String guid);

    /**
     * 修改默认式样的模板id
     * @param guid
     * @return
     */
    ApiResult editDefaultModel(String guid,String name);

    List<SimpleModel> findModels();

    ApiResult countModel(String guid);

    ApiCode updateDefaultStyleModelId(String styleId,String defaultModelId);

    ApiCode updateDefaultStyleModelProgram(String styleId,String defaultModelId);
}
